{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "customInput": null,
    "customOutput": null,
    "executionStartTime": 1661302280147,
    "executionStopTime": 1661302280197,
    "originalKey": "f3588f1d-48ba-4ba3-8ab6-98824c186a5f",
    "requestMsgId": "f3588f1d-48ba-4ba3-8ab6-98824c186a5f",
    "showInput": false
   },
   "source": [
    "# Tutorial: Automatic differentiation variational inference (ADVI)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "customInput": null,
    "originalKey": "caa2603b-0377-4d8f-a8ae-bef574660e20",
    "showInput": false
   },
   "source": [
    "This tutorial demonstrates the automatic differentiation variational inference (ADVI) `AutoGuideVI` implementation.\n",
    "It assumes a variational family which mean-field factorizes into a product of Gaussians: $$q(z) = \\prod_i N(z_i; \\mu_i, \\sigma_i)$$\n",
    "ADVI is a convenient way to perform VI and obtain distributional estimates which\n",
    "include uncertainty. It is appropriate when posteriors are expected to be close to a product of\n",
    "Normals."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Prerequisites"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Install Bean Machine in Colab if using Colab.\n",
    "import sys\n",
    "\n",
    "\n",
    "if \"google.colab\" in sys.modules and \"beanmachine\" not in sys.modules:\n",
    "    !pip install beanmachine"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "import torch.distributions as dist\n",
    "import beanmachine.ppl as bm\n",
    "import torch\n",
    "from beanmachine.ppl.inference.vi import ADVI\n",
    "from matplotlib import pyplot as plt\n",
    "import pandas as pd\n",
    "import seaborn as sns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "\n",
    "# Plotting settings\n",
    "plt.rc(\"figure\", figsize=[8, 6])\n",
    "plt.rc(\"font\", size=14)\n",
    "plt.rc(\"lines\", linewidth=2.5)\n",
    "sns.set_context('notebook')\n",
    "\n",
    "# Manual seed\n",
    "bm.seed(11)\n",
    "torch.manual_seed(11)\n",
    "\n",
    "# Other settings for the notebook.\n",
    "smoke_test = \"SANDCASTLE_NEXUS\" in os.environ or \"CI\" in os.environ"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "customInput": null,
    "originalKey": "8ddeec3b-b69b-400a-9716-93a5d2e19d86",
    "showInput": false
   },
   "source": [
    "## ADVI on a Normal-Normal model"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "code_folding": [],
    "customInput": null,
    "hidden_ranges": [],
    "originalKey": "a6857036-db4c-4a18-a8b0-e284cf23de8e",
    "showInput": false
   },
   "source": [
    "This example considers a Normal-Normal model where both the prior $\\mu \\sim N(0, 10)$ and observation model $x \\mid \\mu \\sim N(\\mu, 1)$ are Normal distributions. All of ADVI's\n",
    "assumptions are satisfied in this setting."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "std_0 = 10. # scale for mu\n",
    "std_x = 1. # scale for observations x(i)\n",
    "\n",
    "@bm.random_variable\n",
    "def mu():\n",
    "    return dist.Normal(\n",
    "        torch.zeros(1), std_0 * torch.ones(1)\n",
    "    )\n",
    "\n",
    "@bm.random_variable\n",
    "def x(i):\n",
    "    return dist.Normal(mu(), std_x * torch.ones(1))\n",
    "\n",
    "observations = {x(i): torch.tensor(1.0) for i in range(10)}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "customInput": null,
    "originalKey": "7f28e20c-ea97-4dc6-aa66-234ee9be4b05",
    "showInput": false
   },
   "source": [
    "The posterior distribution $\\mu \\mid x$ is Gaussian due to conjugacy.\n",
    "Below, we [use conjugacy](https://en.wikipedia.org/wiki/Conjugate_prior#When_likelihood_function_is_a_continuous_distribution)\n",
    "to compute its location and scale in closed form"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor(0.9990) tensor(0.3161)\n"
     ]
    }
   ],
   "source": [
    "expected_variance = 1 / (\n",
    "    (std_0**-2) + (sum(observations.values()) / std_x**2)\n",
    ")\n",
    "expected_std = torch.sqrt(expected_variance)\n",
    "expected_mean = expected_variance * (\n",
    "    (sum(observations.values()) / std_x**2)\n",
    ")\n",
    "print(expected_mean, expected_std)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "customInput": null,
    "originalKey": "2954d2e8-5eb1-45a2-8d0e-46b9be49d1df",
    "showInput": false
   },
   "source": [
    "ADVI makes a mean-field assumption, but this does not matter since there is a single 1-dimensional latent random variable.\n",
    "It also uses a Gaussian variational approximation, but this is appropriate for this example since by conjugacy we know\n",
    "this assumption is valid. Hence, we expect ADVI to yield a good approximation:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/json": {
       "ascii": false,
       "bar_format": null,
       "colour": null,
       "elapsed": 0.015527009963989258,
       "initial": 0,
       "n": 0,
       "ncols": null,
       "nrows": 16,
       "postfix": null,
       "prefix": "",
       "rate": null,
       "total": 1000,
       "unit": "it",
       "unit_divisor": 1000,
       "unit_scale": false
      },
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "45fe5d6903f94c1ab5cf400abdaab7df",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "  0%|          | 0/1000 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Normal(loc: tensor([1.0096], requires_grad=True), scale: tensor([0.3336], grad_fn=<SoftplusBackward0>))\n"
     ]
    }
   ],
   "source": [
    "v_world = ADVI(queries=[mu()], observations=observations,).infer(\n",
    "    num_steps=1000,\n",
    ")\n",
    "print(v_world.get_guide_distribution(mu()))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Below we visualize the density functions for the target and the ADVI approximation."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 800x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "with torch.no_grad():\n",
    "    xs = torch.linspace(-4, 4, steps=100)\n",
    "    sns.lineplot(\n",
    "        data=pd.DataFrame({\n",
    "            'mu': xs,\n",
    "            'target': dist.Normal(expected_mean, expected_std).log_prob(xs),\n",
    "            'ADVI approximation': v_world.get_guide_distribution(mu()).log_prob(xs),\n",
    "        }).melt(id_vars=['mu'], value_name='log_prob'),\n",
    "        x='mu',\n",
    "        y='log_prob',\n",
    "        hue='variable',\n",
    "    )"
   ]
  }
 ],
 "metadata": {
  "language_info": {
   "name": "python"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
